import request from '@/utils/request'

export const userApi = {
  // 获取用户列表 - 已接入后端（非分页）
  getUsers(params) {
    return request.get('/user', { params })
  },

  // 获取用户列表 - 分页版本 - 已接入后端
  getUsersPaged(pageIndex = 0, pageSize = 10, params = {}) {
    // 构建查询参数
    const queryParams = { 
      pageIndex, // 后端从0开始
      pageSize
    }
    
    // 添加筛选条件
    if (params.username) queryParams.username = params.username
    if (params.email) queryParams.email = params.email
    if (params.roleId) queryParams.roleId = params.roleId
    if (params.isActive !== null && params.isActive !== undefined) queryParams.isActive = params.isActive
    if (params.startDate) queryParams.startDate = params.startDate
    if (params.endDate) queryParams.endDate = params.endDate
    
    return request.get('/user/paged', { params: queryParams })
  },
  
  // 获取用户详情 - 已接入后端
  getUserById(id) {
    return request.get(`/user/${id}`)
  },
  
  // 创建用户 - 已接入后端
  createUser(data) {
    return request.post('/user', data)
  },
  
  // 更新用户 - 已接入后端
  updateUser(id, data) {
    // 后端期望的是完整的UpdateUserDto，需要包含id
    const updateDto = {
      id: id,
      nickName: data.nickName || '',
      email: data.email,
      avatar: data.avatar || null,
      description: data.description || null,
      isActive: data.isActive
    }
    return request.put('/user', updateDto)
  },
  
  // 删除用户 - 已接入后端
  deleteUser(id) {
    return request.delete(`/user/${id}`)
  },
  
  // 批量创建用户 - 已接入后端
  batchCreateUsers(users) {
    return request.post('/user/batch', users)
  },
  
  // ❌ 以下接口后端未实现，需要补充
  
  // 批量删除用户 - 已接入后端
  batchDeleteUsers(ids) {
    return request.post('/user/batch-delete', ids, {
      headers: { 'Content-Type': 'application/json' }
    })
  },
  
  // 重置用户密码 - 已接入后端
  resetPassword(id, data = null) {
    if (data && data.newPassword) {
      // 如果提供了新密码，则发送密码数据
      return request.post(`/user/${id}/reset-password`, { newPassword: data.newPassword })
    } else {
      // 如果没有提供密码，则使用原来的方式（自动生成密码）
      return request.post(`/user/${id}/reset-password`, { newPassword: 'DefaultPassword123!' })
    }
  },
  
  // 启用/禁用用户 - 后端缺失
  toggleUserStatus(id, status) {
    return request.put(`/user/${id}/status`, { status })
  },

  // 获取用户统计信息 - 后端缺失
  getUserStats() {
    return request.get('/user/stats')
  },

  // 获取用户角色列表 - 后端缺失
  getUserRoles() {
    return request.get('/user/roles')
  },

  // 分配用户角色 - 已接入后端
  assignRole(userId, roleId) {
    return request.post(`/user/${userId}/assign-role/${roleId}`)
  },

  // 移除用户角色 - 已接入后端
  removeRole(userId, roleId) {
    return request.post(`/user/${userId}/remove-role/${roleId}`)
  },

  // 获取用户权限 - 后端缺失
  getUserPermissions(userId) {
    return request.get(`/user/${userId}/permissions`)
  },

  // 搜索用户 - 后端缺失
  searchUsers(keyword, filters = {}) {
    return request.get('/user/search', { 
      params: { keyword, ...filters } 
    })
  },

  // 导出用户数据 - 后端缺失
  exportUsers(format = 'excel', filters = {}) {
    return request.get('/user/export', {
      params: { format, ...filters },
      responseType: 'blob'
    })
  },

  // 导入用户数据 - 后端缺失
  importUsers(file) {
    const formData = new FormData()
    formData.append('file', file)
    return request.post('/user/import', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  // 获取用户活动日志
  getUserLogs(userId, params = {}) {
    return request.get(`/users/${userId}/logs`, { params })
  },

  // 获取在线用户列表
  getOnlineUsers() {
    return request.get('/users/online')
  },

  // 强制用户下线
  forceLogout(userId) {
    return request.post(`/users/${userId}/logout`)
  },

  // 获取用户登录历史
  getLoginHistory(userId, params = {}) {
    return request.get(`/users/${userId}/login-history`, { params })
  },

  // 验证用户名是否可用
  checkUsername(username) {
    return request.get('/users/check-username', { 
      params: { username } 
    })
  },

  // 验证邮箱是否可用
  checkEmail(email) {
    return request.get('/users/check-email', { 
      params: { email } 
    })
  },

  // 发送密码重置邮件
  sendPasswordResetEmail(email) {
    return request.post('/users/send-reset-email', { email })
  },

  // 通过令牌重置密码
  resetPasswordByToken(token, newPassword) {
    return request.post('/users/reset-password', { token, password: newPassword })
  },

  // 获取用户头像上传地址
  getAvatarUploadUrl(userId) {
    return request.get(`/users/${userId}/avatar-upload-url`)
  },

  // 更新用户头像
  updateAvatar(userId, avatarFile) {
    const formData = new FormData()
    formData.append('avatar', avatarFile)
    return request.post(`/users/${userId}/avatar`, formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  }
}
